
package br.com.aeternu.controleatendimento;

import java.awt.Menu;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.apache.log4j.Logger;
import br.com.aeternu.controleatendimento.atendimento.Atendimento;
import br.com.aeternu.controleatendimento.common.ifc.IfcMensagemUsuario;
import br.com.aeternu.controleatendimento.common.ui.EasyOptionPane;
import br.com.aeternu.controleatendimento.exception.ControleAtendimentoException;
import br.com.aeternu.controleatendimento.manutencao.agenda.Agenda;
import br.com.aeternu.controleatendimento.manutencao.conclusao.Conclusao;
import br.com.aeternu.controleatendimento.manutencao.empresa.Empresa;
import br.com.aeternu.controleatendimento.manutencao.medico.Medico;
import br.com.aeternu.controleatendimento.manutencao.tipoexame.TipoExame;
import br.com.aeternu.controleatendimento.manutencao.turno.Turno;

/**
 * Menu popup do sistema.
 * 
 * @author Janeiro/2014: Junio de Souza Fernandes <DD>
 */
public class SysTrayMenu extends PopupMenu
{

   private static Logger logger = Logger.getLogger(SysTrayMenu.class);
   private static final long serialVersionUID = 1L;

   public SysTrayMenu()
   {
      super(IfcMensagemUsuario.INFO_SOBRE);

      inicializaMenu();
   }

   private MenuItem getMenuTurno()
   {
      MenuItem menuItem = new MenuItem("Turnos");
      menuItem.addActionListener(new ActionListener()
      {

         public void actionPerformed(ActionEvent e)
         {
            try
            {
               new Turno();
            }
            catch (ControleAtendimentoException e1)
            {
               logger.error(e1.getMessage(), e1);
               EasyOptionPane.showErrorMessageDialog(null, e1.getMessage());
            }
         }

      });

      return menuItem;
   }

   private MenuItem getMenuEmpresa()
   {
      MenuItem menuItem = new MenuItem("Empresas");
      menuItem.addActionListener(new ActionListener()
      {

         public void actionPerformed(ActionEvent e)
         {
            try
            {
               new Empresa();
            }
            catch (ControleAtendimentoException e1)
            {
               logger.error(e1.getMessage(), e1);
               EasyOptionPane.showErrorMessageDialog(null, e1.getMessage());
            }
         }

      });

      return menuItem;
   }

   private MenuItem getMenuAgenda()
   {
      MenuItem menuItem = new MenuItem("Agendas");
      menuItem.addActionListener(new ActionListener()
      {

         public void actionPerformed(ActionEvent e)
         {
            try
            {
               new Agenda();
            }
            catch (ControleAtendimentoException e1)
            {
               logger.error(e1.getMessage(), e1);
               EasyOptionPane.showErrorMessageDialog(null, e1.getMessage());
            }
         }

      });

      return menuItem;
   }

   private Menu getMenuManutencao()
   {
      Menu menu = new Menu("Manutenção");

      menu.add(getMenuAgenda());
      menu.add(getMenuConclusao());
      menu.add(getMenuEmpresa());
      menu.add(getMenuMedico());
      menu.add(getMenuTipoExame());
      menu.add(getMenuTurno());

      return menu;
   }

   private MenuItem getMenuMedico()
   {
      MenuItem menuItem = new MenuItem("Médicos");
      menuItem.addActionListener(new ActionListener()
      {

         public void actionPerformed(ActionEvent e)
         {
            try
            {
               new Medico();
            }
            catch (ControleAtendimentoException e1)
            {
               logger.error(e1.getMessage(), e1);
               EasyOptionPane.showErrorMessageDialog(null, e1.getMessage());
            }
         }
      });

      return menuItem;
   }

   private MenuItem getMenuSair()
   {
      MenuItem menuItem = new MenuItem("Sair");
      menuItem.addActionListener(new ActionListener()
      {

         public void actionPerformed(ActionEvent e)
         {
            System.exit(0);
         }
      });

      return menuItem;
   }

   private MenuItem getMenuConclusao()
   {
      MenuItem menuItem = new MenuItem("Conclusões");
      menuItem.addActionListener(new ActionListener()
      {

         public void actionPerformed(ActionEvent e)
         {
            try
            {
               new Conclusao();
            }
            catch (ControleAtendimentoException e1)
            {
               logger.error(e1.getMessage(), e1);
               EasyOptionPane.showErrorMessageDialog(null, e1.getMessage());
            }
         }
      });

      return menuItem;
   }

   private MenuItem getMenuTipoExame()
   {
      MenuItem menuItem = new MenuItem("Tipos de Exames");
      menuItem.addActionListener(new ActionListener()
      {

         public void actionPerformed(ActionEvent e)
         {
            try
            {
               new TipoExame();
            }
            catch (ControleAtendimentoException e1)
            {
               logger.error(e1.getMessage(), e1);
               EasyOptionPane.showErrorMessageDialog(null, e1.getMessage());
            }
         }
      });

      return menuItem;
   }

   private MenuItem getMenuVerAtendimentos()
   {
      MenuItem menuItem = new MenuItem("Ver Atendimentos");
      menuItem.addActionListener(new ActionListener()
      {

         public void actionPerformed(ActionEvent e)
         {
            try
            {
               new Atendimento();
            }
            catch (ControleAtendimentoException e1)
            {
               logger.error(e1.getMessage(), e1);
               EasyOptionPane.showErrorMessageDialog(null, e1.getMessage());
            }
         }
      });

      return menuItem;
   }

   private void inicializaMenu()
   {
      add(getMenuVerAtendimentos());
      addSeparator();
      add(getMenuManutencao());
      add(getMenuSair());
   }
}
